//该文件用于创建Vuex中最为核心的store
import Vue from 'vue'
//1、引入Vuex
import Vuex from 'vuex'
//应用Vuex插件（因为要应用插件，而且得确保这句话在引入store import store from './store'之前执行，import语句一般会提前到一个文件的最上方先执行，
//所以才把这句话写在文件里面的new Vuex.Store的上面）
Vue.use(Vuex)

//准备actions——用于响应组件中的动作，类似于服务员，交给厨师处理（如果不发ajax请求这个actions可以省略）
const actions = {
	/* jia(context,value){
		console.log('actions中的jia被调用了')
		context.commit('JIA',value)
	},
	jian(context,value){
		console.log('actions中的jian被调用了')
		context.commit('JIAN',value)
	}, */
	// 第一个参数类似于迷你版的store，上下文对象，第二个参数就是参数值
	jiaOdd(context,value){
		console.log('actions中的jiaOdd被调用了')
		if(context.state.sum % 2){
			// 执行下面对应的mutations方法
			context.commit('JIA',value)
		}
	},
	jiaWait(context,value){
		console.log('actions中的jiaWait被调用了')
		setTimeout(()=>{ //延时执行
			context.commit('JIA',value)
		},500)
	}
}
//准备mutations——用于操作数据（state）。类似于厨师
const mutations = {
	JIA(state,value){
		console.log('mutations中的JIA被调用了')
		state.sum += value
	},
	JIAN(state,value){
		console.log('mutations中的JIAN被调用了')
		state.sum -= value
	}
}
//准备state——用于存储数据（共享的数据）
const state = {
	sum:0 //当前的和
}

//创建并暴露store，下面的三个类型都是对象
export default new Vuex.Store({
	actions,
	mutations,
	state,
})